/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
var addTwoNumbers = function(l1, l2) {
    const result = new ListNode()
    const nodeArr=[];
    let num1 = ''
    let num2 = ''
    while(l1 !== null){
        num1+=l1.val;
        l1=l1.next;
    }

    while(l2 !== null){
        num2+=l2.val
        l2=l2.next;
    }

    const resultNum=BigInt(num1.split('').reverse().join(''))   +BigInt(num2.split('').reverse().join(''));
    
    const arrNum=resultNum.toString().split('').reverse()
    
    result.val=Number(arrNum[0]);
    for(let i=1;i<arrNum.length;i++){
        if(arrNum[i] !== ''){ // 过滤空字符串
            nodeArr.push(new ListNode(Number(arrNum[i])))
        }
    }

    for(let i=0;i<nodeArr.length;i++){
        nodeArr[i].next=nodeArr[i+1] || null
    }

    result.next=nodeArr[0] || null;

    return result
};